#ifndef _KC_COMMANDTYPE_H__KC_
#define _KC_COMMANDTYPE_H__KC_

#include <string>
#include <map>
#include <boost/assign/list_of.hpp>

namespace kc_sf
{
	enum CommandType
	{
		UndefinedCommand = 0,
		Helo,
		Ehlo,
		AuthPlain,
		AuthLogin,
		StartTLS,
		Mail,
		Rcpt,
		Data,
		Bdat,
		Rset,
		Vrfy,
		Expn,
		Help,
		Noop,
		Quit
	};

	const std::map<CommandType, std::string> CommandTypeToString
	= boost::assign::map_list_of
		(UndefinedCommand, "UNDEFINED")
		(Helo, "HELO")
		(Ehlo, "EHLO")
		(AuthPlain, "AUTH PLAIN")
		(AuthLogin, "AUTH LOGIN")
		(StartTLS, "STARTTLS")
		(Mail, "MAIL FROM")
		(Rcpt, "RCPT TO")
		(Data, "DATA")
		(Bdat, "BDAT")
		(Rset, "RSET")
		(Vrfy, "VRFY")
		(Expn, "EXPN")
		(Help, "HELP")
		(Noop, "NOOP")
		(Quit, "QUIT");
}

#endif // _KC_COMMANDTYPE_H__KC_
